import {
  Column,
  CreateDateColumn,
  Entity,
  Index,
  PrimaryGeneratedColumn,
  UpdateDateColumn,
} from 'typeorm';

@Entity()
@Index(['type', 'relevancyId'])
export class ActionLog {
  /** 主键 */
  @PrimaryGeneratedColumn()
  id: number;

  /** 用户id */
  @Column()
  userId: number;

  /** 操作类型 */
  @Column()
  action: EActionLogActionEnum;

  /** 数据类型 */
  @Column()
  type: EActionLogTypeEnum;

  /** 数据名/组件名 */
  @Column({
    nullable: true,
  })
  name: string;

  /** 数据描述 */
  @Column({
    nullable: true,
  })
  description: string;

  /** 数据/组件内容 */
  @Column({
    nullable: true,
    type: 'longtext',
  })
  content: string;

  /** 关联id */
  @Column({
    nullable: true,
  })
  relevancyId: number;

  /** 使用次数 */
  @Column({
    default: 1,
  })
  useCount: number;

  /** 创建时间 */
  @CreateDateColumn()
  createAt: Date;

  /** 更新时间 */
  @UpdateDateColumn()
  updateAt: Date;
}

export enum EActionLogTypeEnum {
  Template = 'Template',
  Kit = 'Kit',
  Component = 'Component',
}

export enum EActionLogActionEnum {
  use = 'use',
  save = 'save',
}
